package com.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.UserDao;
import com.entity.UserEntity;
import com.service.UserService;
import com.utils.PageUtils;
import com.utils.Query;

/**
 * 系统用户服务实现类
 *
 * 该类实现了系统用户相关的业务逻辑，主要包括分页查询用户信息。
 * 通过MyBatis-Plus提供的ServiceImpl类，简化了数据库操作。
 *
 * @author team10
 */
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService {

	/**
	 * 分页查询用户信息
	 *
	 * @param params 查询参数
	 * @return 返回分页查询结果
	 */
	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		// 创建分页对象，并调用selectPage进行分页查询
		Page<UserEntity> page = this.selectPage(
				new Query<UserEntity>(params).getPage(),
				new EntityWrapper<UserEntity>() // 使用EntityWrapper封装查询条件
		);
		// 返回封装后的分页结果
		return new PageUtils(page);
	}

	/**
	 * 根据条件查询用户列表
	 *
	 * @param wrapper 查询条件封装
	 * @return 返回用户列表
	 */
	@Override
	public List<UserEntity> selectListView(Wrapper<UserEntity> wrapper) {
		// 使用baseMapper执行自定义查询
		return baseMapper.selectListView(wrapper);
	}

	/**
	 * 带条件分页查询用户信息
	 *
	 * @param params 查询参数
	 * @param wrapper 查询条件封装
	 * @return 返回分页查询结果
	 */
	@Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<UserEntity> wrapper) {
		// 创建分页对象并获取数据
		Page<UserEntity> page = new Query<UserEntity>(params).getPage();
		// 设置查询结果
		page.setRecords(baseMapper.selectListView(page, wrapper));
		// 返回封装后的分页结果
		PageUtils pageUtil = new PageUtils(page);
		return pageUtil;
	}
}
